package cn.edu.xust.communication.util;

public class StringUtils {
    /**
     * 将字符串转换为ASCII十六进制表示
     * @param str 要转换的字符串
     * @return 十六进制表示的字符串
     */
    public static String toHexString(String str) {
        byte[] bytes = str.getBytes(); // 获取字节数组
        StringBuilder hexBuilder = new StringBuilder(); // 用于拼接十六进制字符串
        for (byte b : bytes) {
            hexBuilder.append(Integer.toHexString((int) b)); // 将字节转换为十六进制字符串并拼接到结果中
        }
        return hexBuilder.toString().toUpperCase(); // 返回最终的十六进制字符串
    }

    /**
     * 将ASCII十六进制表示转换为字符串
     * @param hex ASCII十六进制表示的字符串
     * @return 转换后的字符串
     */
    public static String fromHexString(String hex) {

        try {
            byte[] bytes = new byte[hex.length() / 2]; // 创建字节数组
            for (int i = 0; i < hex.length(); i += 2) {
                bytes[i / 2] = (byte) Integer.parseInt(hex.substring(i, i + 2), 16); // 将每两个十六进制字符转换为一个字节
            }
            return new String(bytes); // 返回转换后的字符串
        } catch (NumberFormatException e) {
            return "无法转义";
        }
    }


}

